package tp.algo2.futbol;

import com.google.common.base.Objects;
import java.util.List;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import tp.algo2.futbol.Jugador;
import tp.algo2.futbol.Partido;
import tp.algo2.futbol.TipoDeJugador;

@SuppressWarnings("all")
public class Solidario implements TipoDeJugador {
  public boolean puedeJugar(final Partido partido) {
    boolean _or = false;
    boolean _partidoIncompleto = partido.partidoIncompleto();
    if (_partidoIncompleto) {
      _or = true;
    } else {
      Boolean _existeCondicional = this.existeCondicional(partido);
      _or = (_partidoIncompleto || (_existeCondicional).booleanValue());
    }
    return _or;
  }
  
  public Boolean existeCondicional(final Partido partido) {
    Boolean _xblockexpression = null;
    {
      List<Jugador> _jugadores = partido.getJugadores();
      final Function1<Jugador,Boolean> _function = new Function1<Jugador,Boolean>() {
          public Boolean apply(final Jugador j) {
            String _tipo = j.tipo();
            boolean _equals = _tipo.equals("Condicional");
            return Boolean.valueOf(_equals);
          }
        };
      Jugador soli = IterableExtensions.<Jugador>findFirst(_jugadores, _function);
      Boolean _xifexpression = null;
      boolean _equals = Objects.equal(soli, null);
      boolean _not = (!_equals);
      if (_not) {
        List<Jugador> _jugadores_1 = partido.getJugadores();
        _jugadores_1.remove(soli);
        return true;
      }
      _xblockexpression = (_xifexpression);
    }
    return _xblockexpression;
  }
  
  public String tipo() {
    return "Solidario";
  }
}
